/*
 * To  change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import bitclub.OfertaNumeroArticulo;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.SimpleDateFormat;

/**
 *
 * @author JAVA
 */
public class POfertaNumeroArticulo {

    public static void nuevoBD(OfertaNumeroArticulo o) {

        DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
        Connection conexion = null;
        Statement st = null;
        int colModificadas = 0;
        String cadenaSQL = "";
        try {
            if (o.getTipo() == 1) {
                cadenaSQL = "INSERT INTO ofertanumeroarticulo (nombre, tipo, fecha_ini, fecha_fin, descuento, num_alq) "
                        + "values ('" + o.getNombre() + "', " + o.getTipo() + ", '" + df.format(o.getFechaInicio()) + "', '" + df.format(o.getFechaFin()) + "', " + o.getDescuento() + ",'" + o.getNumAlquiladas() + "')";
            } else if (o.getTipo() == 2) {
                cadenaSQL = "INSERT INTO ofertanumeroarticulo (nombre, tipo, dias_extras, fecha_ini, fecha_fin, num_alq) "
                        + "values ('" + o.getNombre() + "', " + o.getTipo() + ", '" + o.getDiasExtras() + "','" + df.format(o.getFechaInicio()) + "', '" + df.format(o.getFechaFin()) + "','" + o.getNumAlquiladas() + "')";
            } else if (o.getTipo() == 3) {
                cadenaSQL = "INSERT INTO ofertanumeroarticulo (nombre, tipo, fecha_ini, fecha_fin, precio_nuevo, num_alq) "
                        + "values ('" + o.getNombre() + "', " + o.getTipo() + ", '" + df.format(o.getFechaInicio()) + "', '" + df.format(o.getFechaFin()) + "','" + o.getPrecioNuevo() + "','" + o.getNumAlquiladas() + "')";
            } else if (o.getTipo() == 4) {
                cadenaSQL = "INSERT INTO ofertanumeroarticulo (nombre, tipo, fecha_ini, fecha_fin, num_alq, num_pagar) "
                        + "values ('" + o.getNombre() + "', " + o.getTipo() + ", '" + df.format(o.getFechaInicio()) + "', '" + df.format(o.getFechaFin()) + "','" + o.getNumAlquiladas() + "','" + o.getNumPagar() + "')";
            }
            Class.forName("com.mysql.jdbc.Driver");
            conexion = DriverManager.getConnection("jdbc:mysql://192.168.1.21/bitclub", "bituser", "bituser");
            st = conexion.createStatement();
            colModificadas = st.executeUpdate(cadenaSQL);
            System.out.println("--------------- Modificada " + colModificadas + " filas -----------------");
        } catch (Exception ex) {
        } finally {
            try {
                st.close();
                conexion.close();
            } catch (Exception ex) {
                //Logger.getLogger(PersistenciaPrueba.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println("Mensaje de Error");
            }
        }
    }

    public static void actualizarBD(OfertaNumeroArticulo o) {

        DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
        Connection conexion = null;
        Statement st = null;
        int colModificadas = 0;
        String cadenaSQL;

        try {
            if (o.getTipo() == 1) {
                cadenaSQL = "UPDATE ofertanumeroarticulo SET nombre = '" + o.getNombre() + "', fecha_fin = '" + df.format(o.getFechaFin()) + "', fecha_ini = '" + df.format(o.getFechaInicio()) + "', descuento = " + o.getDescuento() + ", num_alq = '" + o.getNumAlquiladas() + "' WHERE id = " + o.getId();
            } else if (o.getTipo() == 2) {
                cadenaSQL = "UPDATE ofertanumeroarticulo SET nombre = '" + o.getNombre() + "', fecha_fin = '" + df.format(o.getFechaFin()) + "', fecha_ini = '" + df.format(o.getFechaInicio()) + "', dias_extras = " + o.getDiasExtras() + ", num_alq = '" + o.getNumAlquiladas() + "' WHERE id = " + o.getId();
            } else if(o.getTipo() == 3){
                cadenaSQL = "UPDATE ofertanumeroarticulo SET nombre = '" + o.getNombre() + "', fecha_fin = '" + df.format(o.getFechaFin()) + "', fecha_ini = '" + df.format(o.getFechaInicio()) + "', precio_nuevo = " + o.getPrecioNuevo() + ", num_alq = '" + o.getNumAlquiladas() + "' WHERE id = " + o.getId();
            }else{
                cadenaSQL= "UPDATE ofertanumeroarticulo SET nombre = '" + o.getNombre() + "', fecha_fin = '" + df.format(o.getFechaFin()) + "', fecha_ini = '" + df.format(o.getFechaInicio()) + "', num_pagar = " + o.getNumPagar() + ", num_alq = '" + o.getNumAlquiladas() + "' WHERE id = " + o.getId();
            }
            Class.forName("com.mysql.jdbc.Driver");
            conexion = DriverManager.getConnection("jdbc:mysql://192.168.1.21/bitclub", "bituser", "bituser");
            st = conexion.createStatement();
            colModificadas = st.executeUpdate(cadenaSQL);
            System.out.println("--------------- Modificada " + colModificadas + " filas -----------------");
        } catch (Exception ex) {
        } finally {
            try {
                st.close();
                conexion.close();
            } catch (Exception ex) {
                //Logger.getLogger(PersistenciaPrueba.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println("Mensaje de Error");
            }
        }


    }

    public static void eliminarBD(OfertaNumeroArticulo o) {

        DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
        Connection conexion = null;
        Statement st = null;
        int colModificadas;

        try {

            Class.forName("com.mysql.jdbc.Driver");
            conexion = DriverManager.getConnection("jdbc:mysql://192.168.1.21/bitclub", "bituser", "bituser");
            st = conexion.createStatement();
            colModificadas = st.executeUpdate("DELETE FROM ofertanumeroarticulo WHERE id =" + o.getId());
            System.out.println("--------------- Modificada " + colModificadas + " filas -----------------");
        } catch (Exception ex) {
        } finally {
            try {
                st.close();
                conexion.close();
            } catch (Exception ex) {
                //Logger.getLogger(PersistenciaPrueba.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println("Mensaje de Error");
            }
        }

    }

    public static List<OfertaNumeroArticulo> seleccionarOfertaBD(Date fechaBusqueda, String tipo) {

        List<OfertaNumeroArticulo> listO = new ArrayList();
        OfertaNumeroArticulo o;
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Connection conexion = null;
        Statement st = null;
        ResultSet rs = null;
        String cadenaSQL = "";

        try {

            if (tipo.equals("Antiguas")) {
                cadenaSQL = "SELECT id, nombre , tipo, dias_extras,  fecha_ini, fecha_fin, descuento,precio_nuevo, num_alq, num_pagar FROM ofertanumeroarticulo where fecha_fin < '" + df.format(fechaBusqueda) + "'";
            } else if (tipo.equals("Actuales")) {
                cadenaSQL = "SELECT id, nombre , tipo, dias_extras,  fecha_ini, fecha_fin, descuento,precio_nuevo, num_alq, num_pagar FROM ofertanumeroarticulo where fecha_fin >'" + df.format(fechaBusqueda) + "' and fecha_ini < '" + df.format(fechaBusqueda) + "'";
            } else if (tipo.equals("Futuras")) {
                cadenaSQL = "SELECT id, nombre , tipo, dias_extras,  fecha_ini, fecha_fin, descuento,precio_nuevo, num_alq, num_pagar FROM ofertanumeroarticulo where fecha_ini > '" + df.format(fechaBusqueda) + "'";
            }

            Class.forName("com.mysql.jdbc.Driver");
            conexion = DriverManager.getConnection("jdbc:mysql://192.168.1.21/bitclub", "bituser", "bituser");
            st = conexion.createStatement();
            rs = st.executeQuery(cadenaSQL);

            while (rs.next()) {

                Date fechaInicio = df.parse(rs.getString("fecha_ini"));
                Date fechaFin = df.parse(rs.getString("fecha_fin"));
                o = new OfertaNumeroArticulo(rs.getDouble("descuento"), rs.getDouble("precio_nuevo"), rs.getInt("dias_extras"), rs.getInt("tipo"), fechaFin, fechaInicio, rs.getString("nombre"), rs.getInt("id"), rs.getInt("num_alq"), rs.getInt("num_pagar"));
                listO.add(o);
            }

        } catch (Exception ex) {
        } finally {
            try {
                rs.close();
                st.close();
                conexion.close();
            } catch (Exception ex) {
                //Logger.getLogger(PersistenciaPrueba.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println("Mensaje de Error");
            }
        }
        return listO;

    }
}
